﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLTV_V2.DataAccess;
using QLTV_V2.BussinessLogic;
using QLTV_V2.BussinessObject;

namespace QLTV_V2
{
    public partial class FrmNhapTructiep : DevComponents.DotNetBar.Office2007RibbonForm
    {
        public FrmNhapTructiep()
        {
            InitializeComponent();
        }
        ConnectData conn = new ConnectData();
        Utilities uti = new Utilities();
        SachBUS sachBUS = new SachBUS();
        private int dk, temp_dgv;
        public string manv;
        private void FrmNhapTructiep_Load(object sender, EventArgs e)
        {

            //Load combobox Loai sach
            DataTable tbLoaiSach = uti.getDataSource("LoaiSach", "TenLoaiSach");
            comb_MaLoaiSach.DataSource = tbLoaiSach;
            DataRow drLoaiSach = tbLoaiSach.NewRow();
            drLoaiSach["MaLoaiSach"] = "choose";
            drLoaiSach["TenLoaiSach"] = "Chọn kho";
            tbLoaiSach.Rows.InsertAt(drLoaiSach, 0);
            comb_MaLoaiSach.DisplayMember = "TenLoaiSach";
            comb_MaLoaiSach.ValueMember = "MaLoaiSach";
            comb_MaLoaiSach.SelectedIndex = 0;
            //Load combobox NCC
            DataTable ncc = uti.getDataSource("NhaCungCap", "TenNCC");
            comb_NCC.DataSource = ncc;
            DataRow drNxb = ncc.NewRow();
            drNxb["MaNCC"] = "choose";
            drNxb["TenNCC"] = "Chọn nhà cung cấp";
            ncc.Rows.InsertAt(drNxb, 0);
            comb_NCC.DisplayMember = "TenNCC";
            comb_NCC.ValueMember = "MaNCC";
            comb_NCC.SelectedIndex = 0;
            //lOAD COMBOOX PHIEU NHAP
            loadComboBox_PhieuNhap();
            comb_MaPhieuNhap.Enabled = true;
            //Load ngày tháng
            date_Ngaylap.Value = System.DateTime.Now;
            //Load trang thái
            btn_Bochon.Enabled = false;
            btn_GhivaNhap.Enabled = false;
            btn_AddBill.Enabled = true;
            loadStatus(true);
        }
        #region Datagridview_Nhap
        private void dataGridView_Nhap_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (temp_dgv != 1)
            {
                try
                {
                    int dong = e.RowIndex;
                    txt_MaCTPhieuNhap.Text = dataGridView_Nhap.Rows[dong].Cells["MaCTPhieuNhap"].Value.ToString();
                    comb_MaLoaiSach.SelectedValue = dataGridView_Nhap.Rows[dong].Cells["MaLoaiSach"].Value.ToString();
                    txt_TenSach.Text = dataGridView_Nhap.Rows[dong].Cells["TenDauSach"].Value.ToString();
                    txt_Soluong.Text = dataGridView_Nhap.Rows[dong].Cells["SoLuongNhap"].Value.ToString();
                    txt_Dongia.Text = dataGridView_Nhap.Rows[dong].Cells["DonGia"].Value.ToString();
                    txt_Thanhtien.Text = dataGridView_Nhap.Rows[dong].Cells["ThanhTien"].Value.ToString();
                }
                catch
                {
                    txt_MaCTPhieuNhap.Text = "";
                    comb_MaLoaiSach.SelectedIndex = 0;
                    txt_TenSach.Text = "";
                    txt_Soluong.Text = "";
                    txt_Dongia.Text = "";
                    txt_Thanhtien.Text = "";
                }
            }
        }
        #endregion
        #region button
        void loadComboBox_PhieuNhap()
        {
            try
            {
                //Load comboBOX MaPhieuNhap
                DataTable tbPhieuNhap = sachBUS.GetPhieuNhap();
                comb_MaPhieuNhap.DataSource = tbPhieuNhap;
                DataRow drPhieuNhap = tbPhieuNhap.NewRow();
                drPhieuNhap["MaPhieuNhap"] = "choose";
                drPhieuNhap["LyDoNhap"] = "Chọn chứng từ nhập";
                tbPhieuNhap.Rows.InsertAt(drPhieuNhap, 0);
                comb_MaPhieuNhap.DisplayMember = "LyDoNhap";
                comb_MaPhieuNhap.ValueMember = "MaPhieuNhap";
                comb_MaPhieuNhap.SelectedIndex = 0;
            }
            catch { }
        }
        private void btn_AddBill_Click(object sender, EventArgs e)
        {
            //dataGridView_Add.Visible = true;
            loadStatus(false);
            resetTexbox(1);
            //Lấy mã kế tiếp cho Phiếu nhập
            string lastID = uti.GetLastID("PhieuNhap", "MaPhieuNhap", "MaPhieuNhap", "CT-0000");
            string nextID = uti.GetNextID(lastID, "CT-");
            txt_Maphieunhap.Text = nextID.ToUpper();

            //Lấy mã kết tiếp cho CT PhieuDuToan nhâp
            string lastID_1 = uti.GetLastID_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap", "MaCTPhieuNhap", txt_Maphieunhap.Text + "-0000");
            string nextID_1 = uti.GetNextID(lastID_1, txt_Maphieunhap.Text + "-");
            txt_MaCTPhieuNhap.Text = nextID_1;
            //lấy ngày nhập
            date_Ngaylap.Value = System.DateTime.Now;
            //Loa trang thai button
            btn_GhivaNhap.Enabled = true;
            btn_Bochon.Enabled = true;
            btn_Sua.Enabled = false; 
            btn_Xoa.Enabled = false;
            comb_MaPhieuNhap.Enabled = false;
            comb_MaPhieuNhap.SelectedIndex = 0;
            //
            dk = 1;
            btn_AddBill.Enabled = false;
            btn_Bochon.Enabled = true;
        }

        private void btn_LocChungTu_Click(object sender, EventArgs e)
        {
            loadComboBox_PhieuNhap();
            comb_MaPhieuNhap.Enabled = true;
            btn_GhivaNhap.Enabled = true;
            btn_Bochon.Enabled = true;
            btn_Sua.Enabled = true;
            btn_Xoa.Enabled = true;
        }

        private void btn_Sua_Click(object sender, EventArgs e)
        {
            loadStatus(false);
            temp_dgv = 1;
            dk = 2;
            resetTexbox(2);
            //Lấy mã kết tiếp cho CT PhieuDuToan nhâp
            string lastID_1 = uti.GetLastID_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap", "MaCTPhieuNhap", txt_Maphieunhap.Text + "-0000");
            string nextID_1 = uti.GetNextID(lastID_1, txt_Maphieunhap.Text + "-");
            txt_MaCTPhieuNhap.Text = nextID_1;
            btn_GhivaNhap.Enabled = true;
            btn_Bochon.Enabled = true;
            btn_Sua.Enabled = false;
            comb_MaPhieuNhap.Enabled = false;
            btn_Bochon.Enabled = false;
        }

        private void btn_Xoa_Click(object sender, EventArgs e)
        {
            if(comb_MaPhieuNhap.SelectedIndex!=0)
            {
            if (MessageBox.Show("Bạn có muốn xóa không?", "Hỏi",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (uti.deleteTable("PhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text) == true)
                        btn_LocChungTu_Click(sender, e);
                }
            }
            else
                MessageBox.Show("Chưa chọn phiếu");
        }
       
        private void btn_GhivaNhap_Click(object sender, EventArgs e)
        {
            if (dk == 1)//Thêm mới
            {
                if (checkSave(3) == true)
                {
                    if (txt_LydoNhap.ReadOnly == false)
                    {
                        PhieuNhap phieunhap = new PhieuNhap();
                        phieunhap = getPhieuNhap_object();
                        if (sachBUS.insertPhieuNhap(phieunhap) == true)
                        {
                            txt_LydoNhap.ReadOnly = true;
                        }
                    }
                    //Dien thong tin chi tiet phieu nhap
                    if (txt_LydoNhap.ReadOnly == true)
                    {
                        CTPhieuNhap ctnhap = getCTPhieuNhap_object();
                        if (Check_Exit_DataGrid() == true)
                        {
                            if (sachBUS.insertCTPhieuNhap(ctnhap) == true)
                            {
                                dataGridView_Nhap.DataSource = uti.getDataSource_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap");
                                string lastID_1 = uti.GetLastID_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap", "MaCTPhieuNhap", txt_Maphieunhap.Text + "-0000");
                                string nextID_1 = uti.GetNextID(lastID_1, txt_Maphieunhap.Text + "-");
                                txt_MaCTPhieuNhap.Text = nextID_1;                          
                            }
                        }
                        else
                            MessageBox.Show("Sách này đã được nhập", "Thông báo");
                    }
                }
            }
            if(dk==2)
                {
                        if (txt_LydoNhap.ReadOnly == false)
                        {
                            if (checkSave(1) == true)
                            {
                                PhieuNhap phieunhap = new PhieuNhap();
                                phieunhap = getPhieuNhap_object();
                                if (sachBUS.updatePhieuNhap(phieunhap, txt_Maphieunhap.Text) == true)
                                {   
                                    txt_LydoNhap.ReadOnly = true;
                                }
                            }
                        }
        //                if (MessageBox.Show("Bạn có muốn nhập thêm không?", "Hỏi",
        //MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        //                {
                            if (txt_LydoNhap.ReadOnly == true)
                            {
                                if (checkSave(2) == true)
                                {
                                    CTPhieuNhap ctnhap = getCTPhieuNhap_object();
                                    if (Check_Exit_DataGrid() == true)
                                    {
                                        if (sachBUS.insertCTPhieuNhap(ctnhap) == true)
                                        {
                                            dataGridView_Nhap.DataSource = uti.getDataSource_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap");
                                            string lastID_1 = uti.GetLastID_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap", "MaCTPhieuNhap", txt_Maphieunhap.Text + "-0000");
                                            string nextID_1 = uti.GetNextID(lastID_1, txt_Maphieunhap.Text + "-");
                                            txt_MaCTPhieuNhap.Text = nextID_1;
                                            txt_TenSach.Text = "";
                                            txt_Soluong.Text = "0";
                                            txt_Dongia.Text = "0";

                                        }
                                    }
                                    else
                                        MessageBox.Show("Sách này đã được nhập", "Thông báo");
                                }
                            }
                        //}
                        //else
                        //    btn_Huy_Click(sender, e);
                }
        }
        
        private void btn_Bochon_Click(object sender, EventArgs e)
        {
            try
            {
                int dong = dataGridView_Nhap.CurrentCell.RowIndex;
                string maCTPhieuNhap = dataGridView_Nhap.Rows[dong].Cells["MaCTPhieuNhap"].Value.ToString();
                if (uti.deleteTable("CTPhieuNhap", "MaCTPhieuNhap", maCTPhieuNhap) == true)
                    dataGridView_Nhap.DataSource = uti.getDataSource_DK("CTPhieuNhap", "MaPhieuNhap", txt_Maphieunhap.Text, "MaCTPhieuNhap");
            }
            catch
            { }
        }
        
        private void btn_Huy_Click(object sender, EventArgs e)
        {
            FrmNhapTructiep_Load(sender, e);
            resetTexbox(1);
        }
   
        private void btn_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        
        private void comb_MaPhieuNhap_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comb_MaPhieuNhap.SelectedIndex == 0)
            {
                txt_Maphieunhap.Text = "";
                date_Ngaylap.Value = System.DateTime.Now;
                comb_NCC.SelectedIndex = 0;
                txt_SoHD.Text = "";
                txt_LydoNhap.Text = "";
            }
            else
            {
                try
                {
                    dataGridView_Nhap.DataSource = uti.getDataSource_DK("CTPhieuNhap", "MaPhieuNhap", comb_MaPhieuNhap.SelectedValue.ToString(), "MaCTPhieuNhap");
                    PhieuNhap phieuNhap = new PhieuNhap();
                    phieuNhap = sachBUS.GetPhieuNhap_Object(comb_MaPhieuNhap.SelectedValue.ToString());
                    txt_Maphieunhap.Text = phieuNhap.MaPhieuNhap;
                    txt_LydoNhap.Text = phieuNhap.LyDoNhap;
                    date_Ngaylap.Value = phieuNhap.NgayNhap;
                    comb_NCC.SelectedValue = phieuNhap.MaNCC;
                    txt_SoHD.Text = phieuNhap.SoHDCT;
                }
                catch
                { }
            }
        }

        #endregion
        #region Cac ham lay thong tin
        PhieuNhap getPhieuNhap_object()
        {
            PhieuNhap phieu = new PhieuNhap();
            phieu.MaPhieuNhap = txt_Maphieunhap.Text.ToUpper();
            phieu.LyDoNhap = txt_LydoNhap.Text;
            phieu.NgayNhap = Convert.ToDateTime(date_Ngaylap.Value);
            phieu.SoHDCT = txt_SoHD.Text;
            phieu.MaNCC = comb_NCC.SelectedValue.ToString();
            phieu.MaNV = manv;
            return phieu;
        }
        CTPhieuNhap getCTPhieuNhap_object()
        {
            CTPhieuNhap ct = new CTPhieuNhap();
            //Lấy mã kết tiếp cho CT PhieuDuToan nhâp
            ct.MaCTPhieuNhap = txt_MaCTPhieuNhap.Text;
            ct.MaPhieuNhap = txt_Maphieunhap.Text.ToUpper();
            ct.MaLoaiSach = comb_MaLoaiSach.SelectedValue.ToString();
            ct.TenDauSach = txt_TenSach.Text;
            ct.SoLuongNhap = Convert.ToInt32(txt_Soluong.Text);
            ct.DonGia = Convert.ToDouble(txt_Dongia.Text);
            ct.BienMuc = false;
            ct.DKMaCB = false;
            return ct;
        }
        #endregion
        //Kiem tra Trùng tên sách trong datagridview
        private bool Check_Exit_DataGrid()
        {
            int n = dataGridView_Nhap.Rows.Count;
            string[] luu = new string[n];
            for (int i = 0; i < n - 1; i++) //Luu vao mang
                luu[i] = dataGridView_Nhap.Rows[i].Cells["TenDauSach"].Value.ToString();
            for (int i = 0; i < n; i++) //Lay ra kiem tra
                if (txt_TenSach.Text == luu[i])
                    return false;
            return true;
        }
        private bool checkSave(int dk)
        {
            if (dk == 1)
            {
                if (txt_LydoNhap.Text == "")
                {
                    MessageBox.Show("Chưa nhập tên phiếu");
                    txt_LydoNhap.Focus();
                    return false;
                }
                if (comb_NCC.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn nhà cung cấp");
                    comb_NCC.Focus();
                    return false;
                }
                if (date_Ngaylap.Text == "")
                {
                    MessageBox.Show("Chưa nhập ngày lập");
                    date_Ngaylap.Focus();
                    return false;
                }
            }
            else 
            if (dk == 2)
            {
                if (comb_MaLoaiSach.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn kho lưu trữ");
                    return false;

                }
                if (txt_TenSach.Text == "")
                {
                    MessageBox.Show("Tên ấn phẩm không được để trống");
                    return false;
                }
                if (txt_Soluong.Text == "" || uti.checkDigit(txt_Soluong.Text) == false)
                {
                    MessageBox.Show("Số lượng không hợp lệ");
                    return false;
                }
                if (txt_Dongia.Text == "" || uti.checkDigit(txt_Dongia.Text) == false)
                {
                    MessageBox.Show("Đơn giá không hợp lệ");
                    return false;
                }
            }
            else
            {
                if (txt_LydoNhap.Text == "")
                {
                    MessageBox.Show("Chưa nhập tên phiếu");
                    txt_LydoNhap.Focus();
                    return false;
                }
                if (comb_NCC.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn nhà cung cấp");
                    comb_NCC.Focus();
                    return false;
                }
                if (date_Ngaylap.Text == "")
                {
                    MessageBox.Show("Chưa nhập ngày lập");
                    date_Ngaylap.Focus();
                    return false;
                }
                if (comb_MaLoaiSach.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn kho lưu trữ");
                    return false;

                }
                if (txt_TenSach.Text == "")
                {
                    MessageBox.Show("Tên ấn phẩm không được để trống");
                    return false;
                }
                if (txt_Soluong.Text == "" || uti.checkDigit(txt_Soluong.Text) == false)
                {
                    MessageBox.Show("Số lượng không hợp lệ");
                    return false;
                }
                if (txt_Dongia.Text == "" || uti.checkDigit(txt_Dongia.Text) == false)
                {
                    MessageBox.Show("Đơn giá không hợp lệ");
                    return false;
                }
            }
                return true;
        }
        private void resetTexbox(int dk)
        {
            if (dk == 1)//Them moi chung tu
            {
                txt_LydoNhap.Text = "";
                date_Ngaylap.Value = System.DateTime.Now;
                comb_NCC.SelectedIndex = 0;
                txt_SoHD.Text = "";
                txt_TenSach.Text = "";
                txt_Soluong.Text = "";
                txt_Dongia.Text = "";
                txt_Thanhtien.Text = "";
                comb_MaLoaiSach.SelectedIndex = 0;
                comb_NCC.SelectedIndex = 0;
            }
            if (dk == 2)//nhập tiếp chi tiết
            {
                txt_TenSach.Text = "";
                txt_Soluong.Text = "";
                txt_Dongia.Text = "";
                txt_Thanhtien.Text = "";
                comb_MaLoaiSach.SelectedIndex = 0;
            }
        }
        private void loadStatus(bool k)
        {
                date_Ngaylap.Enabled = !k;
                txt_LydoNhap.ReadOnly = k;
                comb_NCC.Enabled = !k;
                txt_SoHD.ReadOnly = k;
                comb_MaLoaiSach.Enabled = !k;
                txt_TenSach.ReadOnly = k;
                txt_Soluong.ReadOnly = k;
                txt_Dongia.ReadOnly = k;
                txt_Thanhtien.ReadOnly = k;
        }
        #region Textchange
        private void txt_Soluong_TextChanged(object sender, EventArgs e)
        {
            try
            {
                txt_Thanhtien.Text = (Convert.ToInt32(txt_Soluong.Text) * Convert.ToDouble(txt_Dongia.Text)).ToString();
            }
            catch { }
        }
        private void txt_Dongia_TextChanged(object sender, EventArgs e)
        {
            try
            {
                txt_Thanhtien.Text = (Convert.ToInt32(txt_Soluong.Text) * Convert.ToDouble(txt_Dongia.Text)).ToString();
            }
            catch { }
        }

        private void txt_Maphieunhap_TextChanged(object sender, EventArgs e)
        {
            try
            {
                dataGridView_Nhap.DataSource = sachBUS.getCTPhieuNhap(txt_Maphieunhap.Text);
            }
            catch { };
        }
        #endregion

    }
}
